home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / B-Book Series / (k)b3.d64 / program106 < prev    next >
Text File  |  2007-02-28  |  1KB  |  46 lines

  1. 0010 // PROGRAM 106
  2. 0020 //
  3. 0030 // COMELY KATE
  4. 0040 //
  5. 0050 // TO ILLUSTRATE THE BINARY SEARCH
  6. 0060 //
  7. 0070 DIM LISST(20)
  8. 0080 //
  9. 0090 // FIRST SET UP THE LIST
  10. 0100 //
  11. 0110 READ N#
  12. 0120 PRINT 
  13. 0130 PRINT "THE ORIGINAL LIST IS:"
  14. 0140 PRINT 
  15. 0150 FOR COUNT#:=1 TO N# DO
  16. 0160 READ LISST(COUNT#)
  17. 0170 PRINT LISST(COUNT#);
  18. 0180 ENDFOR COUNT#
  19. 0190 //
  20. 0200 // PERFORM SEARCH
  21. 0210 //
  22. 0220 PRINT 
  23. 0230 PRINT 
  24. 0240 INPUT "VALUE TO BE SEARCH FOR ": VALUE
  25. 0250 PRINT 
  26. 0260 SEARCH(VALUE,LISST,1,N#)
  27. 0270 DATA 20
  28. 0280 DATA 12,34,34,34,45,48,54,56,56,65
  29. 0290 DATA 67,76,77,78,84,87,88,89,94,98
  30. 0300 END 
  31. 0310 //
  32. 0320 PROC SEARCH(ITEM,REF LISST(),BOTTOM#,TOP#) 
  33. 0330 IF BOTTOM#>TOP# THEN
  34. 0340 PRINT ITEM,"IS NOT IN LIST"
  35. 0350 ELSE 
  36. 0360 MIDDLE#:=(BOTTOM#+TOP#) DIV 2
  37. 0370 IF ITEM=LISST(MIDDLE#) THEN
  38. 0380 PRINT ITEM," IS IN LIST IN POSITION ",MIDDLE#
  39. 0390 ELIF ITEM>LISST(MIDDLE#) THEN
  40. 0400 SEARCH(VALUE,LISST,MIDDLE#+1,TOP#)
  41. 0410 ELSE 
  42. 0420 SEARCH(VALUE,LISST,BOTTOM#,MIDDLE#-1)
  43. 0430 ENDIF 
  44. 0440 ENDIF 
  45. 0450 ENDPROC SEARCH
  46.